/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.treepoke.util.string;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;

/**
 *
 * @author dpulido
 */
public class StringUtil {

    /**
     * Prepara un string para recibir una cantidad N de parámetros en un query
     * JDBC
     *
     * @param length cantidad de parámetros que se van a ingresa
     * @return
     */
    public static String prepareParameters(int length) {
        StringBuilder builder = new StringBuilder(length * 2 - 1);
        for (int i = 0; i < length; i++) {
            if (i > 0) {
                builder.append(',');
            }
            builder.append('?');
        }
        return builder.toString();
    }

    /**
     * Reemplaza un string con una cantidad de parámetros
     * @param cadena
     * @param param
     * @return 
     */
    public static String stringPlaceHolder(String cadena, Object[] param) {
        return String.format(cadena, param);
    }
    
    /**
     * author etorres
     * @param identificacion
     * @param digitoVerificacion
     * @return 
     */
    public static String aplicarFormatoNroDocumento(String identificacion, 
        Integer digitoVerificacion) {
        String nroDocumento = identificacion;
        Long identificacionLong = null;
        
        if (identificacion == null || identificacion.trim().length() == 0) {
            return nroDocumento;
        }
        else {
            try {
                identificacionLong = Long.parseLong(identificacion);
            } catch (NumberFormatException nfe) {
                System.err.println("Error convirtiendo identificación a número: " + nfe.getMessage());
                return nroDocumento;
            }
        }
        
        try {
            DecimalFormat df = new DecimalFormat("#");
            df.setGroupingUsed(true);
            df.setGroupingSize(3);
            DecimalFormatSymbols dfs = df.getDecimalFormatSymbols();
            dfs.setGroupingSeparator('.');
            df.setDecimalFormatSymbols(dfs);
            nroDocumento = df.format(identificacionLong);
        } catch (Exception e) {
            System.err.println("Error dando formato : " + e.getMessage());
            return identificacion;
        }
        
        if (digitoVerificacion != null) {
            nroDocumento = nroDocumento + "-" + digitoVerificacion;
        }
        
        return nroDocumento;
    }
}
